package io;

import java.io.File;

/**
 * @author IT枫斗者
 * @ClassName RecursionTest.java
 * @From www.javatiaozao.com
 * @Description TODO
 */
public class RecursionTest {
    public static void main(String[] args) {
        //需求 : 扫描 E:\tiaozaoclass\FileDoc\day09collection 下所有的文件及其子文件中的 .java 文件.
        //分析需求：扫描到指定的目录下面 E:\tiaozaoclass\FileDoc\day09collection ，子目录及其文件中后缀以.java结尾的。
        //每次访问到问文件中，需要访问他的子目录以及子目录下的子目录，这个时候可以用递归技术来实现
        //每次扫描到新的目录时候，都需要获取这个目录下面的文件或者文件夹，再通过判断获取符合条件的文件

        //开始编程
        //创建File文件对象
        File file = new File("E:\\tiaozaoclass\\FileDoc\\day09collection");
        //创建扫描方法
        scanFiles(file,".java");
    }

    //递归扫描文件夹
    private static void scanFiles(File file, String s) {
        //1.获取文件目录下的所有子目录文件数组public File[] listFiles()
        File[] files = file.listFiles();
        //2.循环当前数组，获取到每一个字文件目录
        for (File f : files
             ) {
            //3.判断是否文件夹
            if(f.isDirectory()){
                scanFiles(f,s);
            }else {
                //4.如果不是文件夹，说明是文件，需要判断
                //判断是否是以.java为结尾的
                if(f.getName().endsWith(s)){
                    System.out.println(f.getAbsolutePath());//打印出绝对路径
                }
            }
        }
    }
}
